// // package main

// // import "fmt"

// // type Myint int

// // // 在函数定义嵌 在其名字之间放上一个变量 即是一个方法
// // func (a Myint) Add(b Myint) (result Myint) {
// // 	return a + b
// // }


// // type Person struct {
// // 	name string
// // 	sex  byte
// // 	age  int
// // }

// // func (P Person) Print()  {
// // 	fmt.Println(P.age , P.name , P.sex)
// // }

// // type Student struct{
// // 	Person 
// // 	id int
// // }

// // func main() {
// // 	var a Myint = 1

// // 	fmt.Println("a.Add(2) = ", a.Add(2)) // 答案是3
// // }



// // package main

// // type Person struct {
// // 	name string
// // 	sex  byte
// // 	age  int
// // }

// // type Student struct {
// // 	Person  // 匿名字段 默认了Student就包含了Person的所有字段
// // 	name    string
// // 	id      int
// // 	address string
// // }

// // // func main() {
// // // 	// 全部初始化
// // // 	var s1 Student = Student{1 , "mile" , "address"}
// // // 	fmt.Println("程序运行完毕")

// // // 	// 部分初始化
// // // 	s2 := Student{id : 2}

// // // 	// 此时s3就是一个指针
// // // 	s3 := &Student{ 2 , "lili" , "addd"}
// // // }

// // func main() {
// // 	s1 := Student{Person{"mike", 'm', 18}, 1, "address"}
// // 	_ = s1
// // }
// package main

// import "fmt"

// type Humaner interface {
// 	Sayhi()
// }

// type Student struct {
// 	name string
// 	id   int
// }

// type Teacher struct {
// 	name string
// 	id   int
// }


// // 两个自定类型都实现自己的Sayhi方法
// func (s *Student) Sayhi() {
// 	fmt.Println("student say hi")
// }

// func (t* Teacher) Sayhi() {
// 	fmt.Println("teacher say hi")
// }


// // 普通函数 参数为Humaner类型的变量i
// func WhoSayhi(i Humaner) {
// 	i.Sayhi()
// }

// func main() {
// 	t := &Teacher{"mike" , 1}
// 	s := &Student{"KK" , 2}

// 	WhoSayhi(t)
// 	WhoSayhi(s)
// }
